package com.pine.manager.core;

import cn.dev33.satoken.secure.SaSecureUtil;
import cn.hutool.core.util.StrUtil;
import lombok.Setter;
import org.springframework.util.ObjectUtils;

/**
 * 密文组件
 *
 * @author pine manage
 * @since 2024-08-14
 */
@Setter
public class CipherComponent {

    /**
     * AES密钥
     */
    private String aesKey;

    /**
     * 默认AES密钥
     */
    private static final String DEFAULT_AES_KEY = "t344f2132131c242";

    /**
     * AES解密
     *
     * @param encryptText 密文
     * @return 明文
     */
    public String aesDecrypt(String encryptText) {
        if(StrUtil.isBlank(encryptText)) {
            return StringPool.EMPTY_STR;
        }
        return SaSecureUtil.aesDecrypt(getAesKey(), encryptText);
    }

    /**
     * AES加密
     *
     * @param text 明文
     * @return 密文
     */
    public String aesEncrypt(String text) {
        if(StrUtil.isBlank(text)) {
            return StringPool.EMPTY_STR;
        }
        return SaSecureUtil.aesEncrypt(getAesKey(), text);
    }

    /**
     * 获取AES密钥
     *
     * @return AES密钥
     */
    private String getAesKey() {
        if (ObjectUtils.isEmpty(aesKey)) {
            return DEFAULT_AES_KEY;
        }
        return aesKey;
    }
}
